<?php
/**
 * Created by PhpStorm.
 * User: Dell
 * Date: 2019-3-6
 * Time: 14:31
 */

namespace app\common\model;


use think\Loader;
use think\Model;

class MemberModel extends Model
{
    // 确定链接表名
    protected $name = 'member';

    /**
     * 查询会员
     * @param $where
     * @param $offset
     * @param $limit
     * @param string $field
     * @return false|\PDOStatement|string|\think\Collection
     */
    public function getMemberByWhere($where, $offset, $limit, $field="*")
    {
        return $this->where($where)->field($field)->limit($offset, $limit)->order('memb_id desc')->select();
    }

    /**
     * 根据搜索条件获取所有的会员数量
     * @param $where
     * @return int|string
     */
    public function getAllMember($where)
    {
        return $this->where($where)->count();
    }

    /**
     * 添加会员
     * @param $param
     * @return array|\think\response\Json
     */
    public function addMember($param)
    {
        try{

            //查重
            $res = $this->checkMember($param);

            if ($res > 0){
                return msg(-1, '', '该手机号已注册');
            }

            $validate = Loader::validate('MemberValidate');
            if(!$validate->scene('add')->check($param)){
                // 验证失败 输出错误信息
                return msg(-1, '', $validate->getError());
            }

            $result = $this->save($param);
            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{

                return msg(1, '', '注册成功');
            }
        }catch (\Exception $e){
            return msg(-2, '', $e->getMessage());
        }
    }

    /**
     * 编辑会员信息
     * @param $param
     * @return array
     */
    public function editMember($param)
    {
        try{

            $validate = Loader::validate('MemberValidate');
            if(!$validate->scene('edit')->check($param)){
                // 验证失败 输出错误信息
                return msg(-1, '', $validate->getError());
            }

            $result = $this->save($param, ['memb_id' => $param['memb_id']]);
            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{

                return msg(1, '', '编辑成功');
            }
        }catch(\Exception $e){
            return msg(-2, '', $e->getMessage());
        }
    }
    /**
     * 添加会员openid
     * @param $param
     * @return array
     */
    public function editMemberOpenid($param)
    {
        try{

            $validate = Loader::validate('MemberValidate');
            if(!$validate->scene('openid')->check($param)){
                // 验证失败 输出错误信息
                return msg(-1, '', $validate->getError());
            }

            $result = $this->save($param, ['memb_id' => $param['memb_id']]);
            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{

                return msg(1, '', '编辑成功');
            }
        }catch(\Exception $e){
            return msg(-2, '', $e->getMessage());
        }
    }

    /**
     * 编辑收件信息
     * @param $param
     * @return array
     */
    public function editMemberAddress($param)
    {
        try{
            $validate = Loader::validate('MemberValidate');
            if(!$validate->scene('address')->check($param)){
                // 验证失败 输出错误信息
                return msg(-1, '', $validate->getError());
            }

            $result = $this->save($param, ['memb_id' => $param['memb_id']]);
            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{

                return msg(1, '', '编辑成功');
            }
        }catch(\Exception $e){
            return msg(-2, '', $e->getMessage());
        }
    }

    /**
     * 根据会员的id 获取会员的信息
     * @param $id
     * @param string $field
     * @return array|false|\PDOStatement|string|Model
     */
    public function getOneMember($id,$field="*")
    {
        return $this->where('memb_id', $id)->field($field)->find();
    }

    /**
     * 验证会员是否注册
     */
    public function checkMember($param){
        $row = $this->getAllMember(['memb_phone'=>$param['memb_phone']]);
        return $row;
    }

    /**
     * 会员密码修改
     * @param $param
     * @return array
     */
    public function memberPwd($param){
        try{
            $validate = Loader::validate('MemberValidate');
            if(!$validate->scene('pwd')->check($param)){
                // 验证失败 输出错误信息
                return msg(-1, '', $validate->getError());
            }

            $result = $this->save(['memb_password'=>$param['memb_password']],['memb_id' => $param['memb_id']]);
            if(false === $result){
                // 验证失败 输出错误信息
                return msg(-1, '', $this->getError());
            }else{

                return msg(1, '', '修改成功');
            }
        }catch(\Exception $e){
            return msg(-2, '', $e->getMessage());
        }
    }

    /**
     * 根据手机查找
     * @param $phone
     * @return array|false|\PDOStatement|string|Model
     */
    public function memberPhone($phone){
        return $this->where('memb_phone', $phone)->find();
    }
}